// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App.vue'
import router from './router'
// 公共配置的方法，外部引入的js
import config from './service/config'
import storage from './utils/until'
import store from './store/';
import VueI18n from 'vue-i18n'
import axios from './service/common-service/service';
window.$axios = axios;
// 使用第三方UI库
import ElementUI from 'element-ui';
import '../node_modules/element-ui/lib/theme-chalk/index.css';
import elementEn from "element-ui/lib/locale/lang/en"; // element-ui 英语语言包
import elementZh from "element-ui/lib/locale/lang/zh-CN"; // element-ui 中文语言包
import * as zh  from "./lang/zh"; // 自己的中文语言包
import * as en from "./lang/en"; // 自己的英文语言包
// 定义filter的相关方法
import filters from './utils/filter'

// 封装公共方法
storage.setItem('serverIP', config);

// 使用UI框架
Vue.use(ElementUI, {
　　　　i18n: (key, value) => i18n.t(key, value)
　　});
// Vue.use(ElementUI);
Vue.use(VueI18n)
const i18n = new VueI18n({
    locale: localStorage.getItem('languageSet') || 'en',   // 从localStorage里获取用户中英文选择，没有则默认中文
    messages: {
        'zh': {
            ...elementZh,
            ...zh
        },
        'en': {
            ...elementEn,
            ...en
        }
    }

    /* messages: {
        'zh': require('./lang/zh'),   // 中文语言包
        'en': require('./lang/en')    // 英文语言包
    } */
})

//使用this.$http代替axios, this指向当前vue实例,但是只能在vue组件中使用；
// Vue.prototype.$axios = axios;

// 全局过滤器引入后配置（Filter）
Object.keys(filters).forEach(key => {
    Vue.filter(key, filters[key])
});

Vue.config.productionTip = false;

// 在入口文件全局定义filter（过滤器）
/* Vue.filter('myFilter', function(value) {
    if(!value) {
        return;
    }
    value = value.toString();
    return value.split(',').reverse().join('');
}); */
router.beforeEach((to, from, next) => {
    let loginState = storage.getItem('loginState');
    if (to.path === '/login' || loginState == true) {
        next();
    } else {
        next({ path: '/login' });
    }
});
/* eslint-disable no-new */
new Vue({
    el: '#app',
    router,
    store,
    i18n,
    components: {
        App
    },
    template: '<App/>'
})
